import React from 'react';
import { Router, Route, hashHistory, IndexRedirect, browserHistory, IndexRoute } from 'react-router';
import { Form, Row, Col, Input, Button, Icon, DatePicker, Select, Modal, Upload, message, Table, Tabs, Checkbox } from 'antd';
import App from '../../App';
import ERPfetch from '../../utils/Fetch/ERPfetch';
import Mutil from '../../utils/mm'
import MutilsCookie from '../../utils/cookie'
import './login.less'

// 引入存储封装文件
// var __mm = new Mutil();
// 引入加密文件
var forge = require('node-forge');
// 创建md5加密
// var md = forge.md.md5.create();
const FormItem = Form.Item;

class ChangePassword extends React.Component {
    constructor(props) {
        super(props)
        this.returnLogin = this.returnLogin.bind(this)
        this.state = {
            data: '',//获取的用户信息密码
            tokenData: [],//获取token数据
            // token:'',
            remember: "",
            tokenCookie: MutilsCookie.get('userInfoDb'),//获取token值
        }
    }
    // 获取url参数
    getUrlParam(name) {

    }

    handleSubmit = (e) => {
        e.preventDefault();
        this.props.form.validateFields((err, values) => {
            if (!err) {
                console.log('Received values of form: ', values);
                this.changePassWordSubmit(values);
            }
        });
    }
    // 修改密码成功，返回首页登录
    changePassWordSubmit = (values) => {
        // 存储数据
        // localStorage.setItem(values.userName,JSON.stringify(values.password))//存入localstorage(key,value)
        // cookie方式存储
        // 进行判断
        var oldPass = values.oldPassword;
        var newPass = values.newPassword; //新密码
        var confirmPass = values.confirmPassword; //确认密码
        oldPass = oldPass.toLowerCase()
        newPass = newPass.toLowerCase()
        confirmPass = confirmPass.toLowerCase()
        console.log(oldPass,newPass, confirmPass)
        // var txt = that.val();
        // newPass = newPass.replace(/(^\s*)|(\s*$)/g,'');
        // confirmPass = confirmPass.replace(/(^\s*)|(\s*$)/g,'');
        // console.log(newPass,confirmPass)
        var reg = new RegExp(/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/);

        if (newPass.length < 6 || newPass.length > 20) {
            message.warning('修改密码长度为6-20个字符');
            return;
        }else if(confirmPass.length < 6 || confirmPass.length > 20){
            message.warning('确认密码长度为6-20个字符');
            return;
        }else {
            if (!reg.test(newPass)) {
                message.warning('不符合规则，密码至少由字母、数字组成');
                console.log("不复合规则")
                return true;
            } else {
                // 创建md5加密
                var md = forge.md.md5.create();
                var md1 = forge.md.md5.create();
                var md2 = forge.md.md5.create();
                md.update(oldPass) //旧密码
                md1.update(newPass) //新密码
                md2.update(confirmPass) //确认密码
                // 密码加密
                var oldPassword = md.digest().toHex(); //旧密码
                var newPassword = md1.digest().toHex(); //新密码
                var confirmPassword = md2.digest().toHex(); //确认密码
                console.log(oldPassword, newPassword, confirmPassword)
                // 判断新老密码是否一样
                if (oldPassword == newPassword) {
                    message.warning('新老密码不能一样哦！');
                    console.log("新老密码不能一样哦！")
                } else if (newPassword == confirmPassword) {
                    // 请求修改密码接口接口
                    console.log(this.state.tokenCookie)
                    ERPfetch.post(
                        '/api/user/changePassword',
                        {
                            "newPassword": newPassword,
                            "oldPassword": oldPassword,
                            "token": this.state.tokenCookie,
                        },
                        {
                            // headers
                        },
                    ).then((response) => {
                        console.log(response)
                        if(response.code == 0){
                            browserHistory.push('/app/login')
                            console.log("修改密码成功")
                        }
                        else if(response.code == 1){
                            message.error(response.msg); 
                            console.log("修改密码失败")
                        }   
                    }).catch((err) => {
                        console.log(err)
                    })
                    console.log("新与确认相同执行函数回调")
                } else if (newPassword != confirmPassword) {
                    message.warning('新密码与确认密码不同哦！');
                    console.log("新与确认不相同")
                }
                console.log("复合规则")
                return false;
            }
        }
        return;
        // 创建md5加密
        // var md = forge.md.md5.create();
        // var md1 = forge.md.md5.create();
        // var md2 = forge.md.md5.create();
        // md.update(values.oldPassword) //旧密码
        // md1.update(values.newPassword) //新密码
        // md2.update(values.confirmPassword) //确认密码
        // // 密码加密
        // var oldPassword = md.digest().toHex(); //旧密码
        // var newPassword = md1.digest().toHex(); //新密码
        // var confirmPassword = md2.digest().toHex(); //确认密码
        // console.log(oldPassword, newPassword, confirmPassword)
        // // if(!reg.test(newPass)){
        // //     // message.warning('不复合guize');
        // //     console.log("不复合guize")
        // //     return;
        // // }
        // // if(newPass.length < 6 || newPass.length > 20){
        // //     message.warning('修改密码长度为6-20个字符');
        // //     return;
        // // }else if(confirmPass.length < 6 || confirmPass.length > 20){
        // //     message.warning('确认密码长度为6-20个字符');
        // //     return;
        // // }else{
        // //     if(!reg.test(newPass)){
        // //         message.warning('不复合guize');
        // //         return;
        // //     }
        // // }
        // // 判断新老密码是否一样
        // if (oldPassword == newPassword) {
        //     message.warning('新老密码不能一样哦！');
        //     console.log("新老密码不能一样哦！")
        // } else if (newPassword == confirmPassword) {
        //     // if(newPass.length < 6 || newPass.length > 20){
        //     //     message.warning('修改密码长度为6-20个字符');
        //     //     return;
        //     // }else if(confirmPass.length < 6 || confirmPass.length > 20){
        //     //     message.warning('确认密码长度为6-20个字符');
        //     //     return;
        //     // }else{
        //     //     if(!reg.test(newPass)){
        //     //         message.warning('不复合guize');
        //     //         return;
        //     //     }
        //     // }
        //     console.log(newPass, confirmPass)
        //     // 请求修改密码接口接口
        //     console.log(this.state.tokenCookie)
        //     // ERPFetch.post(
        //     //     '/api/user/changePassword',
        //     //     {
        //     //         "newPassword": newPassword,
        //     //         "oldPassword": oldPassword,
        //     //         "token": this.state.tokenCookie,
        //     //     },
        //     //     {
        //     //         // headers
        //     //     },
        //     // ).then((response) => {
        //     //     console.log(response)
        //     //     if(response.code == 0){
        //     //         browserHistory.push('/app/login')
        //     //         console.log("修改密码成功")
        //     //     }
        //     //     else if(response.code == 1){
        //     //         message.error(response.msg); 
        //     //         console.log("修改密码失败")
        //     //     }   
        //     // }).catch((err) => {
        //     //     console.log(err)
        //     // })
        //     console.log("新与确认相同执行函数回调")
        // } else if (newPassword != confirmPassword) {
        //     message.warning('新密码与确认密码不同哦！');
        //     console.log("新与确认不相同")
        // }
    }
    // 返回首页界面
    returnLogin = () => [
        browserHistory.push('/app/home')
    ]
    render() {
        const { getFieldDecorator } = this.props.form;
        const { data, msg } = this.state;
        return (
            <Form onSubmit={this.handleSubmit} className="login-form">
                <span className="loginName">CodeHK</span>
                <span className="loginName">修改密码</span>
                {/* <div className="hintSpan">
                    <span className="hint">初始登录密码请修改后再使用</span>
                    <span className="hint">登录密码每30天需修改一次，且不得与上两次重复</span>
                </div> */}
                <FormItem>
                    {getFieldDecorator('oldPassword', {
                        rules: [{ required: true, message: '请输入当前密码!' }],
                    })(
                        <Input prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />} type="password" placeholder="当前密码" />
                        )}
                </FormItem>
                <FormItem>
                    {getFieldDecorator('newPassword', {
                        rules: [{ required: true, message: '请输入修改密码!' }],
                    })(
                        <Input prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />} type="password" placeholder="修改密码" />
                        )}
                </FormItem>
                <FormItem>
                    {getFieldDecorator('confirmPassword', {
                        rules: [{ required: true, message: '请输入确认密码!' }],
                    })(
                        <Input prefix={<Icon type="lock" style={{ color: 'rgba(0,0,0,.25)' }} />} type="password" placeholder="确认密码" />
                        )}
                </FormItem>
                <FormItem>
                    <div className="submitButton">
                        <Button type="primary" htmlType="submit" className="confirm-button">
                            确认
                        </Button>
                        <Button type="primary" className="return-form-button" onClick={this.returnLogin}>
                            返回
                        </Button>
                    </div>
                </FormItem>
            </Form>
        );
    }
}

const A = Form.create()(ChangePassword)
export default A;